Link to this headingATProto

Data like a key value store stored in a Merkel tree with signatures at://did:plc:user/com.example.repo/record_key

Universal did:* resolver
AT Protocol Explorer

Link to this headingGetting Information about a user

Note: Most users dont use well-known and instead use the DNS entry

Getting the users DID by DNS:

>>> dig TXT _atproto.bsky.app +short "did=did:plc:z72i7hdynmk6r22z27h6tvur" >>> dig TXT _atproto.jay.bsky.team +short "did=did:plc:oky5czdrnfjpqslsw2a5iclo"

Gettting the users DID by wellknown:

Getting the user info from plc.directory:

>>> curl https://plc.directory/did:plc:z72i7hdynmk6r22z27h6tvur | jq . { "@context": [ "https://www.w3.org/ns/did/v1", "https://w3id.org/security/multikey/v1", "https://w3id.org/security/suites/secp256k1-2019/v1" ], "id": "did:plc:z72i7hdynmk6r22z27h6tvur", "alsoKnownAs": [ "at://bsky.app" ], "verificationMethod": [ { "id": "did:plc:z72i7hdynmk6r22z27h6tvur#atproto", "type": "Multikey", "controller": "did:plc:z72i7hdynmk6r22z27h6tvur", "publicKeyMultibase": "zQ3shQo6TF2moaqMTrUZEM1jeuYRQXeHEx4evX9751y2qPqRA" } ], "service": [ { "id": "#atproto_pds", "type": "AtprotoPersonalDataServer", "serviceEndpoint": "https://puffball.us-east.host.bsky.network" } ] }

Link to this headingUsing XRPC

Getting the Profile of a domain:

>>> curl "https://public.api.bsky.app/xrpc/app.bsky.actor.getProfile?actor=did:plc:z72i7hdynmk6r22z27h6tvur" | jq . >>> curl "https://public.api.bsky.app/xrpc/app.bsky.actor.getProfile?actor=bsky.app" | jq . { "did": "did:plc:z72i7hdynmk6r22z27h6tvur", "handle": "bsky.app", "displayName": "Bluesky", "avatar": "https://cdn.bsky.app/img/avatar/plain/did:plc:z72i7hdynmk6r22z27h6tvur/bafkreihwihm6kpd6zuwhhlro75p5qks5qtrcu55jp3gddbfjsieiv7wuka@jpeg", "associated": { "lists": 6, "feedgens": 7, "starterPacks": 3, "labeler": false, "chat": { "allowIncoming": "none" }, "activitySubscription": { "allowSubscriptions": "followers" } }, "labels": [], "createdAt": "2023-04-12T04:53:57.057Z", "verification": { "verifications": [], "verifiedStatus": "none", "trustedVerifierStatus": "valid" }, "description": "official Bluesky account (check username👆)\n\nBugs, feature requests, feedback: [email protected]", "indexedAt": "2025-10-27T21:05:26.152Z", "banner": "https://cdn.bsky.app/img/banner/plain/did:plc:z72i7hdynmk6r22z27h6tvur/bafkreichzyovokfzmymz36p5jibbjrhsur6n7hjnzxrpbt5jaydp2szvna@jpeg", "followersCount": 30494238, "followsCount": 4, "postsCount": 697, "pinnedPost": { "cid": "bafyreicnt42y6vo6pfpvyro234ac4o6ijug6adwwrh7awflgrqlt4zibxq", "uri": "at://did:plc:z72i7hdynmk6r22z27h6tvur/app.bsky.feed.post/3l6oveex3ii2l" } } >>> curl "https://public.api.bsky.app/xrpc/app.bsky.feed.getAuthorFeed?actor=did:plc:z72i7hdynmk6r22z27h6tvur" | jq .

Link to this headingMerkel Tree Inforamtion

Example:

>>> curl "https://puffball.us-east.host.bsky.network/xrpc/com.atproto.sync.getHead?did=did:plc:z72i7hdynmk6r22z27h6tvur" {"root":"bafyreicibjtvb35fopeedz6aiacpaxwzg6mxa2bh5jjl6gyngsagw5ue5q"}

Link to this headingGet the full repository (CAR file with signatures and Merkle tree)

Example:

Link to this headingGet the Signatures

Link to this headingUsing the serviceEndpoint